The present disclosure relates generally to, among other things, the displaying of content in an electronic environment, and in particular to dynamically loading content based on a view or focus of a user, application, or client, as well as utilizing navigation elements in a way that appears to a user as if all information on a page is loaded, independent of the amount of information that is actually loaded.
As an ever-increasing amount of information is available electronically, techniques for displaying this information in ways that are useful and intuitive to a user are becoming more complex. For example, a user using a search engine to locate content using key terms might result in tens of thousands, or even millions of results that match those key terms. Users familiar with standard computer-based software expect certain behavior when navigating or scrolling through long lists of material, but in environments such as Internet-based applications such functionality can be difficult to provide.
For example, graphical user interfaces (GUIs) such as Web browsers typically can only render, display, or otherwise convey a certain amount of information while still maintaining an acceptable level of performance. In such an example, it is not practical (or in some cases even possible) to display long lists of content using existing approaches and providing standard navigational functionality. As such, a smaller subset of the results is typically displayed at any given time. A standard way to address this is to display an initial group of the items with the highest relevancy score (or other selected sort order) on a first page, and separate the results so that each subsequent group of relevant items is displayed on a separate “page.” While this can be advantageous, as it limits the amount of content that has to be rendered at any given time, users often do not like to have to navigate through multiple pages. For example, if a user navigates to a tenth page of search results and wants to return to a previously viewed result, but does not remember the page that result was on, the user must navigate back through each page until the item is located. Also, in an application such as an online music store where a user might want to see which songs have been purchased for a given artist, the songs might be split over multiple pages such that it is difficult to get a good overview as to which songs that user actually owns.
One approach to solving this problem is to load an initial set of results, such as the first 25 results, then load additional sets of 25 results as the user navigates down a result page. While this solves the problem of loading all the data initially, if the user navigates to the bottom of the page then the GUI still has to render information for all the results at one time, and thus can perform very slowly or even fail to function properly. Further, in GUIs with a scroll bar indicating where a user is viewing relative to a full list of results, the appearance of the scroll bar and size of the draggable thumb will adjust every time an additional set is loaded, such that a user is not able to tell where the user is in the list until the entire list is loaded. For example, in an alphabetical list a user is not able to jump to the items that begin with the letter “n”, which typically would be near the middle of the list, as the user has no idea about the actual length of the full list. Another potential problem with such an approach is that when a user scrolls to a portion of a page where nothing has been loaded yet, the user will not see anything in that new portion. Further, there can be a substantial delay until anything appears in that place, as all the information above that portion must first be loaded in order to get to the information in that portion.
It thus is desirable to, among other things, improve the user experience when viewing content in an electronic environment, particularly for large lists, arrays, or other sets of content where the content itself takes up a significant amount of memory or other resources.